/**
 * 后台管理登录接口
 */

//引入Q模块
var Q = require('q');

//引入公共函数
var util = require('../../util');

//login入口函数
var index = function(getData, postData, config, redis, db) {
	var deferred = Q.defer();
	if(postData.userName && postData.userPwd && postData.vcode && postData.vcodeRn) {
		console.log('后台管理' +　postData.userName + '登录');
		redis.get('vcode-' + postData.vcodeRn).then(function(vcode) {
			console.log('验证码比对', vcode.toLowerCase(), postData.vcode.toLowerCase());
			if(postData.vcode.toLowerCase() == vcode.toLowerCase()) {
				db.connectDB('common').then(function(commonDB) {
					return commonDB.select('adminUsers', {
						userName: postData.userName,
						userPwd: postData.userPwd
					});
				}, function() {
					deferred.reject('-0127');
				}).then(function(adminUser) {
					if(adminUser.length == 0) {
						//后台管理登录用户名或密码错误
						deferred.reject('-0144');
					}
					else {
						let session = '';
						util.createRandomStr(168).then(function(randomStr) {
							session = randomStr;
							return redis.set(session, JSON.stringify({
								openId: postData.userName,
								sessionKey: Date.now()
							}));
						}, function() {
							//生成随机字符串失败
							deferred.reject('-0069');
						}).then(function() {
							console.log('成功生成后台管理' + postData.userName + '的登录session值：' + session);
							deferred.resolve(session);
						}, function() {
							//存放后台管理登录态到redis失败
							deferred.reject('-0145');
						});
					}
				}, function() {
					//查询管理员数据库失败
					deferred.reject('-0143')
				});
			}
			else {
				//后台管理登录验证码不正确
				deferred.reject('-0142');
			}
		}, function() {
			//redis读取缓存验证码失败
			deferred.reject('-0141');
		});
	}
	else {
		//请求登录的参数不足
		deferred.reject('-0140');
	}
	return deferred.promise;
}

module.exports = {
	index: index
};